﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using clBUS;
using clEntidad;
using clEntidad.Ex;

namespace portero_.Admin
{
    public partial class frmUsuarioEdit : Form
    {
        public int id { get; set; }
        public frmUsuarioEdit(int id)
        {
            InitializeComponent();
            this.id = id;
        }

        private void frmUsuarioEdit_Load(object sender, EventArgs e)
        {
            BUSUsuario objBUS = new BUSUsuario(Constantes.CADENA_BD);
            Usuario elem = objBUS.get(id);
            tbId.Text = elem.id.ToString();
            tbNombre.Text = elem.nombre;
            ckbAdmin.Checked = elem.esAdmin;
            ckbActivo.Checked = elem.activo;
            BUSLocal objBUSL = new BUSLocal(Constantes.CADENA_BD);
            lbLocal.Items.Clear();
            foreach (Local local in objBUSL.getAll())
            {
                int ix = lbLocal.Items.Add(local);
                foreach (Local locUsr in elem.Locales)
                {
                    if (local.id == locUsr.id)
                    {
                        lbLocal.SetItemChecked(ix, true);
                        elem.Locales.Remove(locUsr);
                        break;
                    }
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (tbNombre.Text == "")
            {
                MessageBox.Show("El nombre del usuario no puede estar vacio", Constantes.cNOMBRE_SIS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                tbNombre.Focus();
                return;
            }
            Usuario elem = new Usuario();
            elem.id = this.id;
            elem.nombre = tbNombre.Text;
            elem.esAdmin = ckbAdmin.Checked;
            elem.activo = ckbActivo.Checked;
            foreach (object itemChecked in lbLocal.CheckedItems)
            {
                Local local = (Local)itemChecked;
                elem.Locales.Add(local);
            }

            BUSUsuario objBUS = new BUSUsuario(Constantes.CADENA_BD);
            try
            {
                objBUS.update(elem, Constantes.USUARIO.id);
                this.Close();
            }
            catch (BUSException ex)
            {
                MessageBox.Show(ex.Message, Constantes.cNOMBRE_SIS, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void seleccionarTodosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            selecAll(true);

        }
        private void selecAll(bool seleccionar)
        {
            for (int ix = 0; ix < lbLocal.Items.Count; ix++)
            {
                lbLocal.SetItemChecked(ix, seleccionar);
            }
        }

        private void deseleccionarTodosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            selecAll(false);
        }

    }
}
